<?php

/**
 * 开放商户 - 商户信息变更功能使用示例
 */

require_once __DIR__ . '/../../../vendor/autoload.php';

use JLPay\Core\OrgConfig;
use JLPay\Core\DemoConfig;
use JLPay\Services\Openmerch\Change\ChangeService;
use JLPay\Models\Openmerch\Change\MerchInfoChangeRequest;
use JLPay\Utils\Logger;
use JLPay\Utils\DemoRequestHandler;

// =================== 日志配置 =====================
$logger = Logger::getInstance();

// =================== 工具函数 =====================
function createConfig(): OrgConfig
{
    return DemoConfig::createConfigWithCrypto();
}

// =================== 数据构建函数 =====================
function buildMerchInfoChangeRequest(): MerchInfoChangeRequest
{
    $request = new MerchInfoChangeRequest();
    
    // 构建商户基础信息
    $baseInfo = [
        'apply_id' => "b8659ea518d14c99b78b5ad000a0803c",
        'product_type' => "01"
    ];
    
    // 构建商户业务信息
    $businessInfo = [
        'merch_no' => "849584358140108"  // 使用cursor中的商户号
    ];
    
    // 构建商户身份信息
    $identificationInfo = [
        'id_card_name' => "张三",                    // 经营者/法人姓名
        'id_card_english_name' => "Zhang San",      // 经营者/法人英文名称
        'id_card_no' => "445221199705024935",      // 经营者/法人身份证件号码
        'legal_person_phone' => "13800138000",     // 经营者/法人手机号码
        'license_name' => "北京科技有限公司",        // 商户法定名称
        'business_scope' => "软件开发、技术服务",    // 经营范围
        'license_address' => "北京市朝阳区xxx街道",  // 注册地址
        'license_pic' => "group1/M00/5E/DB/rBQFm2cRyWGAUF_zAAS9l9WA_pE1351477"
    ];
    
    // 构建结算信息
    $settleInfo = [
        // 结算信息字段
    ];
    
    // 设置请求参数
    $request->setBaseInfo($baseInfo)
            ->setBusinessInfo($businessInfo)
            ->setIdentificationInfo($identificationInfo);
    
    return $request;
}

// =================== 示例函数 =====================
function merchInfoChangeDemo(): void
{
    global $logger;

    $logger->info("开始执行商户信息变更示例");
    
    // 创建配置对象和变更服务
    $config = createConfig();
    $changeService = new ChangeService($config);
    
    // 创建商户信息变更请求
    $request = buildMerchInfoChangeRequest();
    
    // 发送请求 - 使用DemoRequestHandler
    $response = DemoRequestHandler::sendRequestAndHandleResponse(
        $changeService, 
        $request, 
        "商户信息变更",
        function($service, $request) {
            return $service->changeMerchInfo($request);
        }
    );
    
    // 处理响应结果
    if ($response && $response->isSuccess()) {
        $logger->info("响应报文：" . json_encode($response->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
    }
    
    $logger->info("商户信息变更示例执行完毕");
}

// =================== 主程序 =====================
$logger->info("=" . str_repeat("=", 50));
$logger->info("===== 商户信息变更示例 开始 =====");
$logger->info("=" . str_repeat("=", 50));

merchInfoChangeDemo();

$logger->info("=" . str_repeat("=", 50));
$logger->info("===== 商户信息变更示例执行完毕 =====");
$logger->info("=" . str_repeat("=", 50)); 